from __future__ import annotations

from src.day20.case_manage.bug import Bug


class BugManage(object):

    def __init__(self):
        self.bugs = []

    def list_bugs(self):
        """
        返回所有Bug的数据。
        :return:
        """
        return self.bugs

    def add_bug(self, bug: Bug) -> bool | str:
        """
        将新的 Bug 实例添加到 bugs 列表。
        :param bug:
        :return:
        """
        if self.bug_exist(bug.bid):
            return "添加bug失败，当前的bug id已经存在"
        self.bugs.append(bug)
        return True

    def get_bug(self, bid) -> Bug:
        """
        根据Bug编号从 bugs 中查找并返回 Bug 实例。
        :param bid:
        :return:
        """
        for bug in self.bugs:
            if bug.bid == bid:
                return bug

    def update_bug(self, bid, bug: Bug):
        """
        根据Bug编号更新 bugs 中的 Bug 实例。
        :param bid:
        :param bug:
        :return:
        """
        if not self.bug_exist(bug.bid):
            return "bug不存在，无法更新"
        for _bug in self.bugs:
            if _bug.bid == bid:
                _bug = bug

    def delete_bug(self, bid):
        """
         根据Bug编号从 bugs 中删除 Bug 实例。
        :param bid:
        :return:
        """
        self.bugs = [bug for bug in self.bugs if bug.bid != bid]

    def bug_exist(self, bid):
        """
        判断bug id是否存在
        :param bid:
        :return:
        """
        return bid in [bug.bid for bug in self.bugs]
